Projeto Final de Estatística para Cientistas de Dados

Professor: Otto Tavares

Aluno: Hugo Silva

  1. Mostre através de prints que você tem acesso a uma plataforma RStudio (instalado localmente ou nuvem).
Figura 1. Terminal exibindo o console R
Figura 1. Terminal exibindo o console R
  1. Escolha uma base de dados para realizar esse projeto. Essa base de dados será utilizada durante toda sua análise. Essa base necessita ter 4 (ou mais) variáveis de interesse. Caso você tenha dificuldade para escolher uma base, o professor da disciplina irá designar para você.

    • A base será a fornecida pelo professor: BaseDPEvolucaoMensalCisp.csv
  2. Explique qual o motivo para a escolha dessa base e explique os resultados esperados através da análise.

    • Essa base foi escolhida pois é possível gerar um impacto social por meio da análise. Como resultado espero ser capaz de deternimar a especificidade de crime de cada região para que assim seja possível, por exemplo, escolher especialistas na resulução de cada tipo de crime
  3. Carregue a base para o RStudio e comprove o carregamento tirando um print da tela com a base escolhida presente na área “Ambiente”/Enviroment. Detalhe como você realizou o carregamento dos dados.

    • Para carregar a base escolhida os seguintes comandos são necessários:
    library(tidyverse)
    data <- read_csv("caminho/para/o/arquivo.csv")
    • Como resultado temos: Figura 2. Workspace com variável data
  4. Instale e carregue os pacotes de R necessários para sua análise (mostre o código necessário):

    1. tidyverse
    • Para instala: install.package("tidyverse")
    • Para carregar: library(tidyverse)
    1. ggplot
    • Para instala: install.package("ggplot2")
    • Para carregar: library(ggplot2)
    1. summarytools
    • Para instala: install.package("summarytools")
    • Para carregar: library(summarytools)
    • Para o caso de summarytools tive problemas com a dependência stringi, para resolver foi necessário instala-la: install.package("stringi")
  5. Escolha outros pacotes necessários, aponte sua necessidade e instale e carregue (mostrando o código necessário).

    • Foi necessário instalar adicionalmente os pacotes:
      • knitr

      • rmarkdown

        install.package("knitr")
        install.package("rmarkdown")
    • Para carregar os pacotes:
    library(htmlwidgets)
    library(ggplot2)
    library(plotly)
    library(tidyverse)
    library(summarytools)
    library(knitr)
    library(kableExtra)
  6. Aplique uma função em R que seja útil para sua análise e mostre.

    • Depois de carregar os dados é necessário organizar os dodos relevantes para o problema, para isso é utilizado a função group_by
    data <- read.csv2("base/BaseDPEvolucaoMensalCisp.csv")
    
    data <- data %>%
    select(
        `mes`,
        `ano`,
        `Regiao`,
        `hom_doloso`,
        `lesao_corp_morte`,
        `latrocinio`,
        `letalidade_violenta`,
        `tentat_hom`,
        `hom_culposo`
    )
    
    data$Regiao <- trimws(data$Regiao)
    
    data$mes_ano <- as.Date(paste(data$ano, data$mes, "01", sep = "-"))
    
    data <- data %>% select(-mes, -ano)
    
    data_gruped_by <- data %>%
        group_by(Regiao, mes_ano) %>%
        summarise(across(c(
            hom_culposo,
            hom_doloso,
            latrocinio,
            lesao_corp_morte,
            letalidade_violenta,
            tentat_hom
        ), sum), .groups = "drop")
  7. Escolha uma variável de seu banco de dados e calcule:

    • A virável escolhida foi “hom_culposo”
    1. a média para todos os eventos
    media <- mean(data_gruped_by$hom_culposo)
    1. o desvio padrão
    desvio_padrao <- sd(data_gruped_by$hom_culposo)
    1. os quantis: 25% e 75%
    quantile_25_hom_culposo <- quantile(data_gruped_by$hom_culposo, 0.25)
    quantile_75_hom_culposo <- quantile(data_gruped_by$hom_culposo, 0.75)
  8. Utilizando o pacote summarytools (função descr), descreva estatisticamente a sua base de dados.

    description <- descr(data_gruped_by)
    kable(description, "html") %>% kable_styling()

    hom_culposo

    hom_doloso

    latrocinio

    lesao_corp_morte

    letalidade_violenta

    tentat_hom

    Mean

    47.1729167

    104.0135417

    3.4437500

    0.9052083

    129.8458333

    98.1322917

    Std.Dev

    26.0855114

    50.6255223

    2.9200259

    1.1635649

    64.1592062

    51.7825746

    Min

    6.0000000

    10.0000000

    0.0000000

    0.0000000

    21.0000000

    11.0000000

    Q1

    25.0000000

    63.0000000

    1.0000000

    0.0000000

    81.0000000

    51.0000000

    Median

    43.0000000

    102.0000000

    3.0000000

    1.0000000

    124.0000000

    99.0000000

    Q3

    65.5000000

    134.5000000

    5.0000000

    1.0000000

    162.5000000

    133.0000000

    Max

    130.0000000

    260.0000000

    22.0000000

    7.0000000

    350.0000000

    271.0000000

    MAD

    28.1694000

    50.4084000

    2.9652000

    1.4826000

    60.7866000

    57.8214000

    IQR

    40.2500000

    71.2500000

    4.0000000

    1.0000000

    81.2500000

    82.0000000

    CV

    0.5529764

    0.4867205

    0.8479204

    1.2854111

    0.4941183

    0.5276813

    Skewness

    0.5974504

    0.4809548

    1.4458524

    1.5612083

    0.8003405

    0.3355137

    SE.Skewness

    0.0789338

    0.0789338

    0.0789338

    0.0789338

    0.0789338

    0.0789338

    Kurtosis

    -0.5071850

    -0.1135275

    3.1521977

    2.5965597

    0.4938802

    -0.4780521

    N.Valid

    960.0000000

    960.0000000

    960.0000000

    960.0000000

    960.0000000

    960.0000000

    Pct.Valid

    100.0000000

    100.0000000

    100.0000000

    100.0000000

    100.0000000

    100.0000000

  9. Escolha uma variável e crie um histograma. Justifique o número de bins usados. A distribuição dessa variável se aproxima de uma “normal”? Justifique.

    • O histograma:
    hist(
        data_gruped_by$hom_culposo,
        main = "Histograma com curva de suavidade",
        breaks = "FD",
        freq = FALSE
    )
    
    lines(density(data_gruped_by$hom_culposo))

    • O número de bins:
    bins <- ceiling(
        2 * IQR(data_gruped_by$hom_culposo) / (
            length(data_gruped_by$hom_culposo)^(1 / 3)
        )
    )
    bins

    Esse número de bins foi usado pois foi observado que valores maioress acabavam trazendo mais distorção para o histograma, ou seja, as barras do gráfico ficavam mais distantes da curva suavisada. A regra utilizada para o número de bins foi a de Diaconis

    • Sim, pois além da média e mediana darem uma “pista” disso, como pode ser observado no gráfico “Normal Q-Q Homicidio Culposo” os dados descrevem uma trajetória aproximada da normal
    qqnorm(data_gruped_by$hom_culposo, main = "Normal Q-Q Homicidio Culposo")
    qqline(data_gruped_by$hom_culposo)

  10. Calcule a correlação entre todas as variáveis dessa base. Quais são as 3 pares de variáveis mais correlacionadas?

    • Utilizando a função cor():
    correlacao <- cor(data_gruped_by %>% select(-mes_ano, -Regiao))
    kable(correlacao, "html") %>% kable_styling()

    hom_culposo

    hom_doloso

    latrocinio

    lesao_corp_morte

    letalidade_violenta

    tentat_hom

    hom_culposo

    1.0000000

    0.4003722

    0.2467896

    0.2414043

    0.3366624

    0.5290556

    hom_doloso

    0.4003722

    1.0000000

    0.5685335

    0.3418643

    0.9570283

    0.5383409

    latrocinio

    0.2467896

    0.5685335

    1.0000000

    0.3263571

    0.6316448

    0.4100123

    lesao_corp_morte

    0.2414043

    0.3418643

    0.3263571

    1.0000000

    0.4118019

    0.3345683

    letalidade_violenta

    0.3366624

    0.9570283

    0.6316448

    0.4118019

    1.0000000

    0.5511579

    tentat_hom

    0.5290556

    0.5383409

    0.4100123

    0.3345683

    0.5511579

    1.0000000

    É possivel observar que os 3 pares de maior correlação são:

    • hom_doloso/letalidade_violenta
    • latrocinio/letalidade_violenta
    • hom_doloso/latrocinio
  11. Crie um scatterplot entre duas variáveis das resposta anterior. Qual a relação da imagem com a correlação entre as variáveis.

    dispersao <- ggplot(
        data_gruped_by, aes(x = hom_doloso, y = letalidade_violenta)
    )
    
    dispersao + geom_point(size = 3, color = "red") +
        labs(
            x = "Homicídio Doloso",
            y = "Letalidade Violenta",
            title = "Gráfico de dispersão"
        ) + geom_smooth(method = "lm")
    ## `geom_smooth()` using formula = 'y ~ x'

    É possível observar pela imagem que há uma tendência de relação entre as variáveis indicando, por exemplo, que os homicidios dolosos costumam ser violêntos

  12. Crie um gráfico linha de duas das variáveis. Acrescente uma legenda e rótulos nos eixos.

plot_ly() %>%
    add_lines(x = data_gruped_by$mes_ano, y = data_gruped_by$hom_culposo, name = "Homicidio Culposo") %>%
    add_lines(x = data_gruped_by$mes_ano, y = data_gruped_by$letalidade_violenta, name = "Letalidade Violenta") %>%
    layout(xaxis = list(title = "Mês-Ano"), yaxis = list(title = "Número de Ocorrências"), title = "Número de casos de Letalidade Violenta e Homicidios Culposos por mês no estado do Rio de Janeiro")